Method and system for enhancing programmability of a field programmable gate array

ABSTRACT

A programmable semiconductor system includes a programmable integrated circuit (“PIC”) and storage capable of facilitating a multi-boot with backup default configuration (“MBC”) process. The PIC, in one embodiment, includes configurable logic blocks (“LBs”), routing connections, and a configuration memory for performing logic functions. The storage includes a first and a second memory. While the first memory stores a user configuration data representing user-defined logic functions, the second memory stores a backup default page (“BDP”) containing default configuration data (“DCD”) for programming or booting PIC to its default setting when the user configuration data fails to boot or program PIC. In one aspect, the user configuration data contains the address of the second memory containing DCD.

PRIORITY

This patent application is a continuation patent application of aco-pending U.S. patent application having a U.S. patent application Ser.No. 16/938,771, filed on Jul. 24, 2020 in the name of the sameinventor(s) and entitled “Method and System for EnhancingProgrammability of A Field-Programmable Gate Array,” issued into a U.S.Pat. No. 11,662,923, on May 30, 2023, which is hereby incorporatedherein by reference in its entirety.

FIELD

The exemplary embodiment(s) of the present application relates to thefield of programmable semiconductor devices for logic operationsinvolving in the computer hardware and software. More specifically, theexemplary embodiment(s) of the present invention relates to enhancingthe integrity of a field-programmable gate array (“FPGA”) orprogrammable logic device (“PLD”) during a process of configuration.

BACKGROUND

With increasing popularity of digital communication, artificialintelligence (AI), IoT (Internet of Things), and/or robotic controls,the demand for faster, flexible, and efficient hardware and/orsemiconductors with processing capabilities is constantly in demand. Tomeet such demand, high-speed and flexible semiconductor chips aregenerally more desirable. One conventional approach to satisfy suchdemand is to use dedicated custom integrated circuits and/orapplication-specific integrated circuits (“ASICs”). A shortcoming withthe ASIC approach is that it lacks flexibility while consumes a largenumber of resources.

An alternative approach, which enjoys the growing popularity, isutilizing programmable semiconductor devices (“PSDs”) such asprogrammable logic devices (“PLDs”) or field-programmable gate arrays(“FPGAs”). A feature of PSD is that it allows an end-user to programand/or reprogram one or more desirable functions to suit his/herapplications after the PSD is fabricated.

A drawback, however, associated with a conventional FPGA or PLD is thatit is typically vulnerable in dealing with defective and/or corruptedconfiguration data.

SUMMARY

One embodiment of the present application discloses a programmablesemiconductor system (“PSS”) capable of improving the programmabilityand/or integrity of a PSD, also known as a programmable integratedcircuit (“PIC”), via a multi-boot with backup default configuration(“MBC”) operation. PIC, in one aspect, includes configurable logicblocks (“LBs”), routing connections, and configuration memory forperforming user-defined logic functions. Each LB, in one example,includes one or more lookup tables (“LUTs”) configured to provide one ormore output signals in accordance with a set of input signals and theconfiguration data stored in the configuration memory.

PSS includes PIC and a storage device wherein the storage device furtherincludes a first memory and second memory. While the first memory storesa user-defined configuration data for programming or booting PIC, thesecond memory stores a backup default page (“BDP”) or backup defaultimage (“BDI”). In one aspect, BDP contains manufacture provided defaultconfiguration data (“DCD”) for programming or booting PIC when theuser-defined configuration data fails to boot PIC. In an alternativeembodiment, the user-defined configuration data contains a memoryaddress pointing to the second memory which contains an alternativeconfiguration data such as DCD.

PSS, in one embodiment, further includes a dual-mode port (“DMP”) forproviding a dual purpose of information transmission. The DMP, in oneaspect, is operable to handle the configuration data during aconfiguration mode. Alternatively, the DMP is operable to handle theuser data during a logic operation mode.

Additional features and benefits of the exemplary embodiment(s) of thepresent invention will become apparent from the detailed description,figures, and claims set forth below.

BRIEF DESCRIPTION OF THE DRAWINGS

The exemplary embodiment(s) of the present invention will be understoodmore fully from the detailed description given below and from theaccompanying drawings of various embodiments of the invention, which,however, should not be taken to limit the invention to the specificembodiments, but are for explanation and understanding only.

FIGS. 1A-1B are block diagrams illustrating a programmable semiconductordevice (“PSD”) capable of enhancing its integrity and/or reliabilityusing an MBC process in accordance with one embodiment of the presentinvention;

FIG. 2 is a block diagram illustrating a routing logic or routing fabriccontaining programmable interconnection arrays capable of routing abackup default (“BD”) bitstream in accordance with one embodiment of thepresent invention;

FIGS. 3A-3B are block diagrams illustrating a programmable semiconductorsystem (“PSS”) containing a storage device and FPGA for facilitating anMBC process in accordance with one embodiment of the present invention;

FIGS. 4A-4B show alternative embodiments illustrating a PSS orprocessing system containing a storage device and FPGA for facilitatingan MBC process in accordance with one embodiment of the presentinvention;

FIGS. 5A-5B are block diagrams illustrating a programmable semiconductorsystem containing a PIC capable of facilitating a multi-boot or dualboot operation in accordance with one embodiment of the presentinvention;

FIG. 6A is a block diagram illustrating a programmable semiconductorsystem containing a PIC capable of facilitating a multi-boot or dualboot operation in accordance with one embodiment of the presentinvention;

FIG. 6B is a block diagram illustrating a programmable semiconductorsystem containing a dual-mode port (“DMP”) for facilitating aconfiguration and a user data operation in accordance with oneembodiment of the present invention;

FIG. 7 is a diagram illustrating a system or computer using PSS and/orPIC able to provide an MBC process to enhance programmability of PIC inaccordance with one embodiment of the present invention;

FIG. 8 is a block diagram illustrating various applications of PSS orPSD containing FPGA or PLD capable of facilitating an MBC process forimproving overall reliability in accordance with one embodiment of thepresent invention;

FIG. 9 is a flowchart illustrating a process of configuring PICfacilitating an MBC process in accordance with one embodiment of thepresent invention;

FIG. 10 is a logic flow diagram illustrating a process of configuringPIC via an MBC process in accordance with one embodiment of the presentinvention; and

FIG. 11 is a logic flow diagram illustrating a process of configurationor data operation via a dual-mode port in accordance with one embodimentof the present invention.

DETAILED DESCRIPTION

Embodiments of the present invention disclose a method(s) and/orapparatus for providing a programmable semiconductor device (“PSD”) orprogrammable integrated circuit (“PIC”) configured to enhancereliability via operation of multi-boot with backup defaultconfiguration data.

The purpose of the following detailed description is to provide anunderstanding of one or more embodiments of the present invention. Thoseof ordinary skills in the art will realize that the following detaileddescription is illustrative only and is not intended to be in any waylimiting. Other embodiments will readily suggest themselves to suchskilled persons having the benefit of this disclosure and/ordescription.

In the interest of clarity, not all of the routine features of theimplementations described herein are shown and described. It will, ofcourse, be understood that in the development of any such actualimplementation, numerous implementation-specific decisions may be madein order to achieve the developer's specific goals, such as compliancewith application- and business-related constraints, and that thesespecific goals will vary from one implementation to another and from onedeveloper to another. Moreover, it will be understood that such adevelopment effort might be complex and time-consuming but wouldnevertheless be a routine undertaking of engineering for those ofordinary skills in the art having the benefit of embodiment(s) of thisdisclosure.

Various embodiments of the present invention illustrated in the drawingsmay not be drawn to scale. Rather, the dimensions of the variousfeatures may be expanded or reduced for clarity. In addition, some ofthe drawings may be simplified for clarity. Thus, the drawings may notdepict all of the components of a given apparatus (e.g., device) ormethod. The same reference indicators will be used throughout thedrawings and the following detailed description to refer to the same orlike parts.

In accordance with the embodiment(s) of the present invention, thecomponents, process steps, and/or data structures described herein maybe implemented using various types of operating systems, computingplatforms, computer programs, and/or general-purpose machines. Inaddition, those of ordinary skills in the art will recognize thatdevices of a less general-purpose nature, such as hardware devices,field-programmable gate arrays (FPGAs), application-specific integratedcircuits (ASICs), or the like, may also be used without departing fromthe scope and spirit of the inventive concepts disclosed herein. Where amethod comprising a series of process steps is implemented by a computeror a machine and those process steps can be stored as a series ofinstructions readable by the machine, they may be stored on a tangiblemedium such as a computer memory device, such as but not limited to,magnetoresistive random access memory (“MRAM”), phase-change memory, orferroelectric RAM (“FeRAM”), flash memory, ROM (Read Only Memory), PROM(Programmable Read-Only Memory), EEPROM (Electrically ErasableProgrammable Read-Only Memory), Jump Drive, magnetic storage medium(e.g., tape, magnetic disk drive, and the like), optical storage medium(e.g., CD-ROM, DVD-ROM, paper card and paper tape, and the like) andother known types of program memory.

The term “system” or “device” is used generically herein to describe anynumber of components, elements, sub-systems, devices, packet switchelements, packet switches, access switches, routers, networks, computerand/or communication devices or mechanisms, or combinations ofcomponents thereof. The term “computer” includes a processor, memory,and buses capable of executing instruction wherein the computer refersto one or a cluster of computers, personal computers, workstations,mainframes, or combinations of computers thereof.

A programmable semiconductor system (“PSS”), in one embodiment, isconfigured to improve the programmability and/or integrity of a PSD orPIC via a multi-boot with backup default configuration (“MBC”)operation. PIC, in one aspect, includes configurable LBs, routingconnections, and configuration memory for performing user-defined logicfunctions. Each LB, in one example, includes LUTs configured to provideone or more output signals in accordance with a set of input signals andthe configuration data stored in the configuration memory. PSS includesPIC and a storage device wherein the storage device further includes afirst memory and second memory. While the first memory stores auser-defined configuration data for programming or booting PIC, thesecond memory stores a backup default page (“BDP”) or backup defaultimage (“BDI”). In one aspect, BDP contains manufacture provided defaultconfiguration data (“DCD”) for programming or booting PIC when theuser-defined configuration data fails to boot PIC. In an alternativeembodiment, the user-defined configuration data contains a memoryaddress pointing to the second memory which contains an alternativeconfiguration data such as DCD.

FIG. 1A is a block diagram illustrating a PSD capable of enhancing itsintegrity and/or reliability using an MBC process in accordance with oneembodiment of the present invention. PSD, also known as FPGA, PIC,and/or a type of Programmable Logic Device (“PLD”), includes an MBCmodule 120 capable of facilitating the MBC process. A function of MBC isto improve the reliability of PIC via multiple rebooting or configuringprocesses. It should be noted that the underlying concept of theexemplary embodiment(s) of the present invention would not change if oneor more blocks (circuit or elements) were added to or removed fromdiagram 170.

PSD includes an array of configurable LBs 180 surrounded by input/outputblocks (“IOs”) 182, and programmable interconnect resources 188 (“PIR”)that include vertical interconnections and horizontal interconnectionsextending between the rows and columns of LB 180 and IO 182. PRI 188 mayfurther include interconnecting array decoders (“IAD”) or programmableinterconnection array (“PIA”). It should be noted that the terms PRI,IAD, and PIA may be used interchangeably hereinafter.

Each LB, in one example, includes programmable combinational circuitryand selectable output registers programmed to implement at least aportion of a user's logic function. The programmable interconnections,connections, or channels of interconnect resources are configured usingvarious switches to generate signal paths between the LBs 180 forperforming logic functions. Each IO 182 is programmable to selectivelyuse an I/O pin (not shown) of PSD.

PIC, in one embodiment, can be divided into multiple programmablepartitioned regions (“PPRs”) 172 wherein each PPR 172 includes a portionof LBs 180, some PPRs 188, and IOs 182. A benefit of organizing PIC intomultiple PPRs 172 is to optimize management of storage capacity, powersupply, and/or network transmission.

Bitstream is a binary sequence (or a file) containing programminginformation or data for a PIC, FPGA, or PLD. The bitstream is created toreflect the user's logic functions together with certain controllinginformation. For an FPGA or PLD to function properly, at least a portionof the registers or flipflops in FPGA needs to be programmed orconfigured before it can function. It should be noted that bitstream isused as input configuration data to FPGA.

A benefit of using an MBC process is to enhance the reliability of PICor FPGA during a configuration process.

FIG. 1B is a block diagram illustrating a PIC containing multipleregions able to use the MBC process to improve its reliability inaccordance with one embodiment of the present invention. To simplify theforegoing discussion, the terms “PSD”, “PIC”, FPGA, and PLD arereferring the same or similar devices and they can be usedinterchangeably hereinafter. Diagram 100 includes multiple PPRs 102-108,PIA 150, and regional I/O ports 166. PPRs 102-108 further includescontrol units 110, memory 112, and LBs 116. Note that control units 110can be configured into one single control unit, and similarly, memory112 can also be configured into one single memory for storingconfigurations. It should be noted that the underlying concept of theexemplary embodiment(s) of the present invention would not change if oneor more blocks (circuit or elements) were added to or removed fromdiagram 100.

LBs 116, also known as configurable function unit (“CFU”) includemultiple LAB s 118 which is also known as a configurable logic unit(“CLU”). Each LAB 116, for example, can be further organized to include,among other circuits, a set of programmable logical elements (“LEs”),configurable logic slices (“CLS”), or macrocells, not shown in FIG. 1B.Each LAB, in one example, may include anywhere from 32 to 512programmable LEs. I/O pins (not shown in FIG. 1B), LABs, and LEs arelinked by PIA 150 and/or other buses, such as buses 162 or 114, forfacilitating communication between PIA 150 and PPRs 102-108.

Each LE includes programmable circuits such as the product-term matrix,lookup tables, and/or registers. LE is also known as a cell,configurable logic block (“CLB”), slice, CFU, macrocell, and the like.Each LE can be independently configured to perform sequential and/orcombinatorial logic operation(s). It should be noted that the underlyingconcept of PSD would not change if one or more blocks and/or circuitswere added or removed from PSD.

Control units 110, also known as configuration logics, can be a singlecontrol unit. Control unit 110, for instance, manages and/or configuresindividual LE in LAB 118 based on the configuring information stored inmemory 112. It should be noted that some I/O ports or I/O pins areconfigurable so that they can be configured as input pins and/or outputpins. Some I/O pins are programmed as bi-directional I/O pins whileother I/O pins are programmed as unidirectional I/O pins. The controlunits such as unit 110 are used to handle and/or manage PSD operationsin accordance with system clock signals.

LBs 116 include multiple LABs that can be programmed by the end-user(s).Each LAB contains multiple LEs wherein each LE further includes one ormore lookup tables (“LUTs”) as well as one or more registers (or Dflip-flops or latches). Depending on the applications, LEs can beconfigured to perform user-specific functions based on a predefinedfunctional library facilitated by the configuration software. PSD, insome applications, also includes a set fixed circuit for performingspecific functions. For example, the fixed circuits include, but notlimited to, a processor(s), a DSP (digital signal processing) unit(s), awireless transceiver(s), and so forth.

PIA 150 is coupled to LBs 116 via various internal buses such as buses114 or 162. In some embodiments, buses 114 or 162 are part of PIA 150.Each bus includes channels or wires for transmitting signals. It shouldbe noted that the terms channel, routing channel, wire, bus, connection,and interconnection are referred to as the same or similar connectionsand will be used interchangeably herein. PIA 150 can also be used toreceive and/or transmits data directly or indirectly from/to otherdevices via I/O pins and LAB s.

Memory 112 may include multiple storage units situated across a PPR.Alternatively, memories 112 can be combined into one single memory unitin PSD. In one embodiment, memory 112 is an NVM storage unit used forboth configuration as well as user memory. The NVM storage unit can be,but not limited to, MRAM, flash, Ferroelectric RAM, and/or phasechanging memory (or chalcogenide RAM). Depending on the applications, aportion of the memory 112 can be designated, allocated, or configured tobe a block RAM (“BRAM”) used for storing large amounts of data in PSD.

A PSD includes many programmable or configurable LBs 116 that areinterconnected by PIA 150, wherein each programmable LB is furtherdivided into multiple LAB s 118. Each LAB 118 further includes manyLUTs, multiplexers and/or registers. During configuration, a userprograms a truth table for each LUT to implement a desired logicalfunction. It should be noted that each LAB, which can be furtherorganized to include multiple logic elements (“LEs”), can be consideredas a configurable logic cell (“CLC”) or slice. For example, a four-input(16 bit) LUT receives LUT inputs from a routing structure (not shown inFIG. 1B). Based upon the truth table programmed into LUT duringconfiguration of PSD, a combinatorial output is generated via aprogrammed truth table of LUT in accordance with the logic values of LUTinputs. The combinatorial output is subsequently latched or buffered ina register or flip-flop before the clock cycle ends.

In one embodiment, control unit 110 includes an MBC module 120. Itshould be noted that MBC module 120 can be placed anywhere within PIC orPSD for facilitating the MBC process. A function of MBC module 120 is tocontrol a configuration or rebooting process using user-definedconfiguration data or default configuration data (“DCD”). A benefit ofusing the MBC process is to recover or restore PIC or PSD from corruptedor incorrect configuration data.

FIG. 2 is a block diagram 200 illustrating a routing logic or routingfabric containing programmable interconnection arrays capable of routinga backup default (“BD”) bitstream in accordance with one embodiment ofthe present invention. Diagram 200 includes control logic 206, PIA 202,I/O pins 230, and clock unit 232. Control logic 206, which may besimilar to control units shown in FIG. 1B, provides various controlfunctions including channel assignment, differential I/O standards, andclock management. Control logic 206 may contain volatile memory,non-volatile memory, and/or a combination of the volatile andnonvolatile memory device for storing information such as configurationdata. In one embodiment, control logic 206 is incorporated into PIA 202.It should be noted that the underlying concept of the exemplaryembodiment(s) of the present invention would not change if one or moreblocks (circuit or elements) were added to or removed from diagram 200.

I/O pins 230, connected to PIA 202 via a bus 231, contain manyprogrammable I/O pins configured to receive and/or transmit signals toexternal devices. Each programmable I/O pin, for instance, can beconfigured to input, output, and/or bi-directional pin. Depending on theapplications, I/O pins 230 may be incorporated into control logic 206.

Clock unit 232, in one example, connected to PIA 202 via a bus 233,receives various clock signals from other components, such as a clocktree circuit or a global clock oscillator. Clock unit 232, in oneinstance, generates clock signals in response to system clocks as wellas reference clocks for implementing I/O communications. Depending onthe applications, clock unit 232, for example, provides clock signals toPIA 202 including reference clock(s).

PIA 202, in one aspect, is organized into an array scheme includingchannel groups 210 and 220, bus 204, and I/O buses 114, 124, 134, 144.Channel groups 210, 220 are used to facilitate routing informationbetween LBs based on PIA configurations. Channel groups can alsocommunicate with each other via internal buses or connections such asbus 204. Channel group 210 further includes interconnecting arraydecoders (“IADs”) 212-218. Channel group 220 includes four IADs 222-228.A function of IAD is to provide configurable routing resources for datatransmission.

IAD such as IAD 212 includes routing multiplexers or selectors forrouting signals between I/O pins, feedback outputs, and/or LAB inputs toreach their destinations. For example, an IAD can include up to 36multiplexers which can be laid out in four banks wherein each bankcontains nine rows of multiplexers. It should be noted that the numberof IADs within each channel group is a function of the number of LEswithin the LAB.

PIA 202, in one embodiment, designates a special IAD such as IAD 218 forfacilitating routing of configuration data. For example, IAD 218 isdesignated to handle connections and/or routings configurationinformation during bitstream transmission. It should be noted thatadditional IADs may be allocated for handling transmission ofconfiguration data including BD bitstream.

An advantage of using IAD 218 within PIA as a designated bitstreamrouting is to ascertain the transmission of configuration bitstreambetween storage and configuration memory inside of PIC or FPGA.

FIG. 3A is a block diagram 300 illustrating a programmable semiconductorsystem (“PSS”) containing a storage device and a PIC for facilitating anMBC process in accordance with one embodiment of the present invention.Diagram 300 includes a storage device 306, PIC (or FPGA) 302, and bus308. Bus 308 may be an internal bus between chips fabricated on amodule. Alternatively, bus 308 can be an independent bus such as JointTest Action Group (“JTAG”) operating between devices. It should be notedthat the underlying concept of the exemplary embodiment(s) of thepresent invention would not change if one or more blocks (circuit orelements) were added to or removed from diagram 300.

PSS can also be referred to as a configurable semiconductor modulecontaining multiple chips and/or integrated circuits (“ICs”). Forexample, PSS is a semiconductor module or card capable of housing PIC302 and storage device 306 linked or connected by an internal bus 308.Alternatively, PSS can be a system-on-chip (“SOC”) containing embeddedPIC 302 and storage device 306 linked by an on-chip bus 308. Withembedded wireless capabilities, PSS can be used to perform a variety ofapplications including, but not limited to, IA systems, autonomousvehicles, drones, ships, security monitoring, industry operations,robotic operations, home appliances, and the like.

PIC or PSD, in one aspect, includes an array of programmable logic 330,configuration memory 322, verification component 328, address ofconfiguration data (“ACD”) unit 326, and mux 324. The array ofprogrammable logic further includes multiple configurable LBs 332capable of being programmed to perform a set of user-specific functions.In one aspect, PIC further includes configurable routing connectionsthat connect various LBs to facilitate the performance of the userdesirable functions. Configuration memory 322, in one embodiment, isused to store configuration data (“CD”) used to program configurable LBs332 for carrying out user-defined logic functions. Each configurableLBs, for example, includes one or more LUTs used to provide one or moreoutput signals in accordance with a set of input signals and CD inconfiguration memory 322.

Configuration memory 322, in one embodiment, can be a volatile memory ornonvolatile memory (“NVM”). The volatile memory, for instance, includesrandom-access memory (“RAM”) or static random-access memory (“SRAM”).The NVM includes flash memory, MRAM, phase-change memory, and/orferroelectric RAM (“FeRAM”). Configuration memory 322, in one aspect, isorganized to store a bitstream of data representing CD for configuringvarious configurable elements, such as LBs and/or LUTs and configurablerouting connections. A function of configuration memory 322 is to storeuser-provided or user-defined configuration bitstream for facilitatingthe delivery of the user-defined logic functions. In one embodiment,configuration memory 322 can be organized into multiple sections orportions capable of storing multiple versions of the CD.

Verification component 328, in one embodiment, is used to verify whetherthe CD or bitstreams in configuration memory 322 functions correctly.For example, verification component 328 which is coupled to LBs iscapable of verifying and confirming the authenticity and integrity ofrecently loaded CD. For example, a predefined set of verification codescan be used by verification component 328 for the confirmation andverification process. It should be noted that the verification code canbe provided by a user. Alternatively, the verification code can beprovided by the manufacture of PIC or FPGA. If verification component328 detects an incorrect CD or corrupted CD, a backup default (“BD”)initiator is activated. The incorrect CD means that the CD isincorrectly generated or the CD is for a different logic function. Thecorrupted CD indicates that the CD may be corrupted during thetransmission via wired or wireless communication.

Upon detecting the incorrect CD or corrupted CD, the BD initiator isactivated to issue a BD signal indicating a new CD is needed orrequired. The BD initiator, not shown in FIG. 3A, can be a part ofverification component 328 or an independent unit. In one embodiment,the BD signal is fed to a next CD mux 324 for loading or reloading a newCD from storage device 306 according to the memory location addressed byACD unit 326.

ACD unit 326 retrieves or obtains memory location of the next CD pointedby a memory address. The memory address for the next CD, in oneembodiment, is extracted from the current CD stored in configurationmemory 322. Alternatively, the memory address for the next CD can beobtained from a BD address stored in an embedded memory if default CD(“DCD”) is the next rebooting or reconfiguring code.

Storage device 306 includes user memory 304 and backup default page(“BDP”) 318. User memory 304 includes multiple memory segments M1-Mn310-316 capable of storing multiple copies or versions of theuser-defined CD. For example, a user can generate and provide a primaryCD, secondary CD, and golden CD wherein the primary CD, secondary CD,and golden CD may be loaded into M1 310, M2, 312, and Mn 316,respectively. Alternatively, user memory 304 is configured to store atleast one user CD for supplying at least a portion of the CD inconfiguration memory 322. It should be noted that storage device 306 canbe volatile memory, nonvolatile memory, or a combination of volatile andnonvolatile memory.

DBP 318, in one aspect, is configured to store DCD which is provided oroffered by the PIC or FPGA manufacture. DCD is coded by the manufacturedesigned for rebooting PIC 302 to the manufacturing setting when all ofthe user-defined CDs fail to configure or reboot PIC 302. For instance,the DCD can be provided by manufacture or company which produces PIC302. In one embodiment, BDP 318 is configured to be hidden from the userto prevent its content or DCD from being accidentally overwritten by auser. In one example, DBP 318 is a flash memory for storing DCD. In oneaspect, the user CD or last user CD contains the address of memorylocation containing the next CD or DCD.

Bus 308, in one example, is a direct communication channel or connectionbetween storage device 304 and PIC 302 for facilitating the passage ortransmission of user CD and/or DCD from storage device 304 toconfiguration memory 322 of PIC 302. Depending on the application, bus308 can use a bus protocol to transmit a bitstream and/or data. The busprotocol includes, but not limited to, serial peripheral interface(“SPI”), inter-integrated circuit (“I2C”), I3C (sense wire), universalasynchronous receiver-transmitter (“UART”), Integer (“Int”), two-wireinterface (“TWI”), Timer, and the like. Bus 308, in one aspect, can beconfigured to be bi-directional. Alternatively, bus 308 is configured tobe one directional.

I²C, in one example, contains a multi-master, multi-slave, single-ended,and serial computer bus. An exemplary application of I²C is that it canbe used for attaching lower-speed peripheral for short-distance andintra-board communication. The SPI bus is a synchronous serialcommunication interface specification used for short-distancecommunication, such as in embedded systems. In one example, SPI devicescommunicate in full-duplex mode using a master-slave architecture with asingle master. The master device originates frames for reading andwriting. It should be noted that SPI can also be referred to as afour-wire serial bus, as opposed to three-, two-, and one-wire serialbuses. UART is a computer hardware device for asynchronous serialcommunication in which the data format and transmission speeds may beconfigurable. In one example, some electric signaling levels and methodsare handled by a driver circuit external to the UART. I3C, also known asSense Wire, provides connections between the chips using signalingpatterns. I3C, for example, employs two wires wherein one wire (SCL) isused as a clock to define the sampling times and the other wire (SDA)being used as a data line.

In operation, upon receipt of an initial configuration trigger, abitstream of CD is transmitted from storage device 306 to configurationmemory 322 via bus 308. The initial configuration trigger includesinternal triggering and external triggering. The internal triggering isdue to its programmed logic function. The external triggering is due tothe receipt of an external signal from another chip or device. Theinitial configuration trigger can also include a combination of internaland external triggering. If the newly loaded CD is verified, theconfiguration process performed by verification component 328 is ended.If, however, the newly loaded CD is not verified, reloading of CD fromstorage device 306 to configuration memory 322 is activated. If themaximum number of retry has not yet been reached, the same CD isreloaded or retransmitted. While a user can define the total number ofretry, a counter is used to count or record the total number of retriesoccurred. When the user CD stored in storage device 306 is exhausted,ACD unit 326 retrieves the address of BDP 318 and selects DCD from BDP319 via selector 320 as indicated by numeral 350. After DCD is loadedinto configuration memory 322, PIC 302 will be booted or configured toits manufacturing setting.

An advantage of using the MBC process to reboot an FPGA is that itallows an FPGA to reboot to a manufacturing setting when user-defined CDfails to boot or configure FPGA whereby it enhances the overallreliability of FPGA.

FIG. 3B is a logic block diagram 360 illustrating a logic processimplemented by verification component 328 for verifying CD in accordancewith one embodiment of the present invention. Verifying component 328includes a testing code component 380, a testing module 362, a counter364, a comparator 368, and a verification result unit 370. Testing codecomponent 380, in one aspect, further includes a verifying code unit 372and BD verifying code unit 376. Verifying code unit 372, for example,contains user provided verifying data for testing and verifying theuser's CD. BD verifying code unit 376 includes manufacture providedverifying data for testing and verifying DCD. It should be noted thatthe underlying concept of the exemplary embodiment(s) of the presentinvention would not change if one or more blocks (circuit or elements)were added to or removed from diagram 360.

Upon receipt of a newly arrived CD, testing module 362 retrievesverifying data from testing code component 380. Depending on the sourceof CD, testing module 362 obtains verifying data either from verifyingcode unit 372 or BD verifying code unit 376. It should be noted thattest code component 380 can be a local, embedded, and/or on-chip memory.If the CD is user-provided, testing module 362 selects verifying datafrom verifying code unit 372 via selector 374. Alternatively, if the CDis DCD, testing module 362 selects verifying data from BD verifying codeunit 376 via selector 374. Testing module 362 subsequently performs averification procedure to verify the integrity and operability of thenewly arrived CD based on the verifying data from test code component380.

Counter 364 is used to count total reloading times of the same CD fromthe storage device to PIC in accordance with a predefined verifyingcondition. The predefined verifying condition, for example, can be thenumber of verification procedures performed by test module 362.Alternatively, the predefined verifying condition can be the loading orreloading of CD from the storage device to the configuration memory. Inone aspect, a user can set or predefine the number of reloading shouldbe performed.

After the execution of the newly arrived CD in response to the verifyingdata, a testing result is generated by testing module 362 andsubsequently fed to comparator 368. Upon selecting a predefined knownvalue from testing code component 380, a comparison output is generatedby comparator 368. It should be noted that the predefined known valuecan be selected either from verifying code unit 372 or BD verifying codeunit 376 by mux 366 based on the source of CD (or DCD). For example, ifthe CD is provided by a user, the predefined known value is retrievedfrom verifying code unit 372. If, however, the CD is DCD, the predefinedknown value is retrieved from BD verifying code unit 376.

Upon receipt of the comparison output, verification result unit 370determines whether the newly arrived CD is verified or whether reloadingof CD is needed. In one aspect, verification result unit 370 includes BDinitiator deciding whether DCD or another user-defined CD should bereloaded upon detecting the failed and/or corrupted CD currently in theconfiguration memory.

An advantage of employing verification component 328 is to enhance thereliability of PSS and/or FPGA even though the user-defined CD iscorrupted or wrong.

FIG. 4A is a block diagram 400 illustrating PSS or processing systemcontaining a storage device and FPGA for facilitating an MBC process inaccordance with one embodiment of the present invention. Diagram 400includes a storage device 406, PIC (or FPGA) 402, and bus 308. Bus 308may be an internal bus between chips on a module or a bus such as JointTest Action Group (“JTAG”) operating between devices. Diagram 400 issimilar to diagram 300 shown in FIG. 3A except that BDP 418 has beenmoved from the storage device (as shown in FIG. 3A) to FPGA or PIC 402as an embedded memory in PIC 402. In one aspect, BDP 418 is situated ina flash memory situated inside of PIC 402. Alternatively, BDP 418 canalso be placed in an embedded RAM or SRAM.

In one embodiment, an initial or first CD for rebooting or configuringPIC 402 is preferably located at external storage such as storage device406 via a bus 308. The initial or first CD, which can also be referredto as primary CD or bitstream, is prepared and provided by a user forcarrying out user-defined logic functions. A benefit of loading CD froman external device is that it may allow a user to control and/or modifythe source of CD in real-time through the operation of user-defined orprogrammed logic in FPGA.

FIG. 4B is a block diagram 450 illustrating PSS or processing systemsituated within FPGA 452 for facilitating an MBC process in accordancewith one embodiment of the present invention. Diagram 450 shows FPGA 452that includes storage device 406, connection(s) 408, configurationmemory 422, verification unit 328, and configurable LBs 330. Diagram 450is similar to diagram 400 shown in FIG. 4A except that storage device406 and connection (bus) 408 are embedded inside of FPGA or PIC 452. Inone aspect, storage device 406 can be a non-volatile memory, volatilememory, and/or a combination of volatile and non-volatile memory.

It should be noted that FPGA or PIC 302 illustrated in FIG. 3A isgenerally categorized as volatile FPGA. PIC 402 may be categorized asnon-volatile FPGA or PIC because it contains an embedded non-volatilememory storing a copy of the CD. For instance, the information onuser-defined logic configuration persists upon termination of the powersource.

An advantage of having a storage to be embedded in PIC is that it allowsa system-on-chip (SOC) design applicable to many applications includingbut not limited to remote security monitoring systems, drones, cars,ships, and the like.

FIG. 5A is a block diagram 500 illustrating a programmable semiconductorsystem containing a PIC capable of facilitating a multi-boot or dualboot operation in accordance with one embodiment of the presentinvention. Diagram 500 includes a storage device 502, PIC (or FPGA) 506,and selector 508. In one aspect, the output of selector 508 is fed toPIC 506 via a connection or bus 308. It should be noted that theunderlying concept of the exemplary embodiment(s) of the presentinvention would not change if one or more blocks (circuit or elements)were added to or removed from diagram 500.

Storage device 502 is organized to store multiple sets or versions ofCDs 510-516 wherein each CD is referenced or addressed by an addresssuch as address 520 pointing to CD 510. For example, CDs 510-516 can beloaded, referenced, and/or addressed by addresses 520-526. In oneembodiment, each CD contains a specific predefined address locationwhich is used to address the location of the next CD or DCD. Thespecific predefined address location, in one aspect, can be assigned orspecified by a user. For instance, the last 4 bytes of CD bitstream aredesignated for storing the address of a memory location containing thenext CD. For example, the last portion of CD 510 contains address 522which points to a memory location containing the next CD 512. In oneembodiment, the last user-defined CD includes the memory address of BDP.For example, the user CD 512 includes a memory address 526 pointing oraddressing a memory location storing DCD 516. In one embodiment, storagedevice 502 contains a communication port 528 which is used to receiveuser and/or manufacture defined CD(s).

PIC 506, in one aspect, includes a configuration memory 322,verification unit 328, initiating and counting unit 530, maximum numberunit 532, and next loading unit 536. Upon detecting defective CD, thecounter is incremented to indicate the total loading times for thepresent CD. If the maximum number of loading times has not been reached,an initiator begins to initiate reloading of the CD from storage device502. If the maximum number of loading times has been reached, theinitiator begins to identify and retrieve the address of memory locationcontaining the new CD including DCD. Upon retrieving an address from theCD currently in configuration memory 322, next loading unit 536 selectsa memory location storing the next CD for CD reloading via selector 508.

PIC 506, in one embodiment, includes a port 529 used to communicate witha user situated geographically away from PSS. Port 529 can be set toreceive certain types of information, data, or input from externaldevices via a communication network. Upon receipt of input via port 529,the input data can be forwarded to storage device 502 as indicated bynumeral 509. It should be noted that the input data can be any types ofdata including but not limited to user data and CD.

PSS is a configurable semiconductor device containing PIC 506 andstorage device 502. PIC 506, in one example, includes a set ofconfigurable LBs, an array of routing connections, and a configurationmemory 322 for performing programmed logic functions. Each of theconfigurable LBs including multiple LUTs configured to provide one ormore output signals in accordance with a set of input signals and CD inconfiguration memory 322.

Storage device 502 stores at least one CD containing a user's functionaldata in a storage location addressed by an address such as CD1 isreferenced by address 520. In this embodiment, storage device 502further stores a second CD containing second user functional data in asecond storage location such as CD2 referenced by address 522. In oneaspect, CD1 includes a memory address 522 which addresses a memorylocation storing CD2 512.

An advantage of having a CD containing an address of the next CD is thatit allows the PIC to be automatically rebooted or configured using thenext CD or DCD without substantial external intervention. Externalintervention includes, but not limited to, control signals from externaldevices and/or systems.

FIG. 5B is a block diagram 550 illustrating a programmable semiconductorsystem containing a PIC capable of facilitating a dual boot operation inaccordance with one embodiment of the present invention. Similar todiagram 500 shown in FIG. 5A, diagram 550 includes a storage device 552,PIC (or FPGA) 506, and selector 508. In one aspect, storage device 552contains a primary CD 510 and a secondary or backup CD 516. In the eventthat the primary CD 510 is defective due to wrong coding or corruptedbitstream due to transmission error, the secondary or backup CD 516 isdownloaded to reboot or configure PIC 506. It should be noted that theunderlying concept of the exemplary embodiment(s) of the presentinvention would not change if one or more blocks (circuit or elements)were added to or removed from diagram 550.

FIG. 6A is a block diagram 600 illustrating a programmable semiconductorsystem containing a PIC capable of facilitating a multi-boot or dualboot operation in accordance with one embodiment of the presentinvention. Diagram 600 includes a storage device 602, PIC (or FPGA) 606,and selector 508. In one aspect, the output of selector 508 is fed toPIC 506 via a connection or bus. Storage device 602 is organized tostore multiple sets or versions of CDs 510-512, 614 which can be loaded,referenced, and/or addressed by addresses 520-522, 624. It should benoted that the underlying concept of the exemplary embodiment(s) of thepresent invention would not change if one or more blocks (circuit orelements) were added to or removed from diagram 600.

Diagram 600 is similar to diagram 500 shown in FIG. 5A except that BDP616 has been moved from the storage device (as shown in FIG. 5A) to FPGAor PIC 606 as an embedded memory in PIC 606. In one aspect, BDP 616containing DCD is situated in a flash memory embedded in PIC 606.Alternatively, BDP 616 can also be placed in a RAM or SRAM embedded inPIC 606. During operation, upon detecting an incorrect, defective,and/or corrupted CD in configuration memory 322, network loading unit612 identifies a new memory location containing the next user CD whenthe next user CD is available in storage device 602 as indicated bynumeral 650.

Alternatively, upon detecting the defective CD, network loading unit 612selects DCD from BDP 616 via mux 610 when the user-defined CD isexhausted. It should be noted that the exhaustion of user-defined CDmeans that none of the user-defined CDs in the storage device can rebootFPGA or PIC. Depending on the applications, CD in configuration memory322 can be configured to contain an address pointing to a memorylocation storing BDP 616. Alternatively, PIC 606 is set to store theaddress of BDP 616 internally.

FIG. 6B is a block diagram 650 illustrating a PSS containing a dual-modeport (“DMP”) 652 for providing dual purposes in accordance with oneembodiment of the present invention. Diagram 650, which is similar todiagram 600 shown in FIG. 6A, includes a configurable semiconductordevice or PSS containing a storage device 602, PIC (or FPGA) 656, andselector 508. In one aspect, PIC 656 includes DMP 652 capable offacilitating communication between selector 508 and configuration memory322. It should be noted that DMP 652 can also be referred to as adual-mode pin, a dual-purpose port, or a dual-purpose pin. To simplifyforgoing discussion, DMP is used in reference to a dual-mode pin, adual-purpose port, or a dual-purpose pin. It should be noted that theunderlying concept of the exemplary embodiment(s) of the presentinvention would not change if one or more blocks (circuit or elements)were added to or removed from diagram 650.

Storage device 602, in this example, is used to store various versionsof CD representing user-defined logic functions, and a bus is used tocouple storage device 602 to DMP 652 via selector 508 for datatransmission. PIC 656, in one embodiment, includes DMP 652 fortransmitting CD during the configuration period. After PIC 656 isprogrammed or configured, DMP 652 is switched to handle the user data.PIC 656, in one example, includes one or more DMPs, configurable LBs,routing connections, and configuration memory 322, verification unit328, initiating and counting unit 530, maximum number unit 532, and nextloading unit 612. While configuration memory 322 stores the currentversion of CD, each configurable LBs includes LUTs configured to provideoutput signals in accordance with a set of input signals and the CD.

PIC 656, in one embodiment, further includes a DMP switch not shown inFIG. 6B, configured to identify and/or schedule when DMP 652 shouldswitch between a configuration mode and a logic operation mode. The DMPswitch, also known the pin controller, can be an independent module or apart of the FPGA controller. A function of the DMP switch is toascertain that DMP can be recovered or continue to operate even afterdiscovery the defect(s) of the CD currently in configuration memory 322.

DMP 652 is operable to handle the configuration data during aconfiguration mode and able to handle user data during a logic operationmode. In one embodiment, DMP 652 is set (or switched) to theconfiguration mode when the DMP is used for loading or transmitting CDfrom the storage via the bus. After configuration phase, DMP 652 isswitched or reset to the logic operation mode thereby the DMP is used tohandle or transmit user data.

Storage device 602 includes a memory section configured to store atleast one user provided CD such as CD 522 for supplying at least aportion of the CD. In one embodiment, the CD includes command signalsused to instruct or facilitate DMP 652 to switch between the two modesfor handling configuration data as well as user data. The two modesrefer to the configuration mode and logic operation mode. BDP 666, inone embodiment, contains DCD which also includes signals to instruct DMP652 to switch between the two modes for facilitating handlingconfiguration data as well as user data.

FIG. 7 is a block diagram 700 illustrating a system or computer usingPSS and/or PIC able to provide an MBC process to enhance theprogrammability of PIC in accordance with one embodiment of the presentinvention. Computer system 700 includes a processing unit 701, aninterface bus 712, and an input/output (“IO”) unit 720. Processing unit701 includes a processor 702, main memory 704, system bus 711, staticmemory device 706, bus control unit 705, I/O element 730, and FPGA 785.It should be noted that the underlying concept of the exemplaryembodiment(s) of the present invention would not change if one or moreblocks (circuit or elements) were added to or removed from FIG. 7 .

Bus 711 is used to transmit information between various components andprocessor 702 for data processing. Processor 702 may be any of a widevariety of general-purpose processors, embedded processors, ormicroprocessors such as ARM® embedded processors, Intel® Core™ Duo,Core™ Quad, Xeon®, Pentium™ microprocessor, Motorola™ 68040, AMD® familyprocessors, or Power PC™ microprocessor.

Main memory 704, which may include multiple levels of cache memories,stores frequently used data and instructions. Main memory 704 may be RAM(random access memory), MRAM (magnetic RAM), or flash memory. Staticmemory 706 may be a ROM (read-only memory), which is coupled to bus 711,for storing static information and/or instructions. Bus control unit 705is coupled to buses 711-712 and controls which component, such as mainmemory 704 or processor 702, can use the bus. Bus control unit 705manages the communications between bus 711 and bus 712. Mass storagememory or SSD which may be a magnetic disk, an optical disk, hard diskdrive, floppy disk, CD-ROM, and/or flash memories are used for storinglarge amounts of data.

I/O unit 720, in one embodiment, includes a display 721, keyboard 722,cursor control device 723, and low-power PLD 725. Display device 721 maybe a liquid crystal device, cathode ray tube (“CRT”), touch-screendisplay, or other suitable display devices. Display 721 projects ordisplays images of a graphical planning board. Keyboard 722 may be aconventional alphanumeric input device for communicating informationbetween computer system 700 and computer operator(s). Another type ofuser input device is cursor control device 723, such as a conventionalmouse, touch mouse, trackball, or other types of the cursor forcommunicating information between system 700 and user(s).

PLD 725 is coupled to bus 712 for providing configurable logic functionsto local as well as remote computers or servers through a wide-areanetwork. PLD 725 and/or FPGA 785 are configured to facilitate theoperation of the MBC process to improve the reliability of FPGA and/orPLD. In one example, PLD 725 may be used in a modem or a networkinterface device for facilitating communication between computer 700 andthe network. Computer system 700 may be coupled to servers via a networkinfrastructure as illustrated in the following discussion.

FIG. 8 is a block diagram 800 illustrating various applications of PSSor PSD containing FPGA or PLD capable of facilitating an MBC process forimproving overall reliability in accordance with one embodiment of thepresent invention. Diagram 800 illustrates AI server 808, communicationnetwork 802, switching network 804, Internet 850, and portable electricdevices 813-819. In one aspect, PSD capable of facilitating MBCoperation is used in an AI server, portable electric devices, and/orswitching network. Network or cloud network 802 can be a wide areanetwork, metropolitan area network (“MAN”), local area network (“LAN”),satellite/terrestrial network, or a combination of a wide-area network,MAN, and LAN. It should be noted that the underlying concept of theexemplary embodiment(s) of the present invention would not change if oneor more blocks (or networks) were added to or removed from diagram 800.

Network 802 includes multiple network nodes, not shown in FIG. 8 ,wherein each node may include mobility management entity (“MME”), radionetwork controller (“RNC”), serving gateway (“S-GW”), packet datanetwork gateway (“P-GW”), or Home Agent to provide various networkfunctions. Network 802 is coupled to Internet 850, AI server 808, basestation 812, and switching network 804. Server 808, in one embodiment,includes machine learning computers (“MLC”) 806.

Switching network 804, which can be referred to as packet core network,includes cell sites 822-826 capable of providing radio accesscommunication, such as 3G (3^(rd) generation), 4G, or 5G cellularnetworks. Switching network 804, in one example, includes IP and/orMultiprotocol Label Switching (“MPLS”) based network capable ofoperating at a layer of Open Systems Interconnection Basic ReferenceModel (“OSI model”) for information transfer between clients and networkservers. In one embodiment, switching network 804 is logically couplingmultiple users and/or mobiles 816-820 across a geographic area viacellular and/or wireless networks. It should be noted that thegeographic area may refer to campus, city, metropolitan area, country,continent, or the like.

Base station 812, also known as cell-site, node B, or eNodeB, includes aradio tower capable of coupling to various user equipments (“UEs”)and/or electrical user equipments (“EUEs”). The term UEs and EUEs arereferring to similar portable devices and they can be usedinterchangeably. For example, UEs or PEDs can be cellular phone 815,laptop computer 817, iPhone® 816, tablets, and/or iPad® 819 via wirelesscommunications. A handheld device can also be a smartphone, such asiPhone®, BlackBerry®, Android®, and so on. Base station 812, in oneexample, facilitates network communication between mobile devices suchas portable handheld device 813-819 via wired and wirelesscommunications networks. It should be noted that base station 812 mayinclude additional radio towers as well as other land switchingcircuitry.

Internet 850 is a computing network using Transmission ControlProtocol/Internet Protocol (“TCP/IP”) to provide linkage betweengeographically separated devices for communication. Internet 850, in oneexample, couples to supplier server 838 and satellite network 830 viasatellite receiver 832. Satellite network 830, in one example, canprovide many functions as wireless communication as well as a globalpositioning system (“GPS”). It should be noted that the MBC operationenhancing the reliability of FPGA can benefit many applications, such asbut not limited to, smartphones 813-819, satellite network 830,automobiles 813, AI servers 808, business 807, and homes 820.

The exemplary embodiment of the present invention includes variousprocessing steps, which will be described below. The steps of theembodiment may be embodied in machine or computer-executableinstructions. The instructions can be used to cause a general-purpose orspecial-purpose system, which is programmed with the instructions, toperform the steps of the exemplary embodiment of the present invention.Alternatively, the steps of the exemplary embodiment of the presentinvention may be performed by specific hardware components that containhard-wired logic for performing the steps, or by any combination ofprogrammed computer components and custom hardware components.

FIG. 9 is a flowchart 900 illustrating a process of configuring PICfacilitating an MBC process in accordance with one embodiment of thepresent invention. At block 902, a process of configuring an FPGAincludes identifying a first bitstream containing user-defined CD storedin the first storage memory via a communication channel.

At block 904, the first bitstream of CD is loaded or transmitted fromthe first storage memory to the configuration memory in the FPGA. Itshould be noted that the first storage memory can be a chip orintegrated circuit (“IC”) on the module. Alternatively, the firststorage memory can be a flash memory embedded in FPGA.

At block 906, the process is capable of verifying the integrity as wellas functionalities of the first bitstream of CD based on a set ofpredefined verification conditions to ascertain that the first bitstreamof CD is not defective.

At block 908, an address of memory location containing a secondbitstream is extracted from the first bitstream of the CD when acorrupted or defective first bitstream is detected. In one embodiment,the second bitstream of the second CD is loaded from the storagelocation addressed by the address of the memory location storing thesecond bitstream. For example, the process identifies the address of thememory location containing the second bitstream in a predefined locationof the first bitstream.

In one embodiment, the process verifies the integrity as well as thefunctionality of the second bitstream based on the second set ofpredefined verification conditions or verifying code to ascertain thatPIC will function properly with the second bitstream of CD. The processis further capable of identifying an address of the BDP containingmanufacture default configuration settings in a predefined location ofthe second bitstream when a corrupted or defective second bitstream isdetected. In one aspect, after extracting the address of the BDP fromthe second bitstream from its bit position or location, FPGA is rebootedor configured via DCD from the BDP to a manufacturing default setting.

FIG. 10 is a logic flow diagram 1000 illustrating a process ofconfiguring PIC via an MBC process in accordance with one embodiment ofthe present invention. At block 1002, a CD such as D1 is loaded intoconfiguration memory at block 1006. After CD verification at block 1008,a verification result, at block 1010, is examined to determine whetherthe CD in the configuration memory is good and functionally checked. Ifthe CD is good and not defective, the process ends at block 1012. If theCD is defective, the process increments the counter at block 1016 andproceeds to next block 1018.

At block 1018, the process determines whether a maximum number of CDloading has been reached. If the maximum number has not been reached,the process proceeds to retry at block 1026 and the reloading begins asindicated by numeral 1032. If the maximum number has been reached, theprocess proceeds to check whether the data in the configuration memoryis DCD or BD. If it is DCD, the process proceeds to block 1022 andissues a failure signal indicating that PIC is defective. If the data inthe configuration memory is not DCD, the process, at block 1028,proceeds to extract the address addresses a memory location containingthe next DC. At block 1030, the process proceeds to reload the next CDfrom the memory as indicated by numeral 1032.

FIG. 11 is a logic flow diagram 1100 illustrating a process ofconfiguration or data processing via a dual-mode port in accordance withone embodiment of the present invention. At block 1102, a processcapable of configuring FPGA via CD or loaded configuration informationidentifies a first bitstream containing configuration data representinguser-defined logic functions stored in a first storage memory via acommunication channel. The first bitstream is a primary configurationdata generated and provided by a user.

At block 1104, upon identifying the first bitstream, the DMP which iscoupled to the bus or the communication channel, is set (or switched) tothe configuration mode. The configuration mode is a setup for handling abitstream containing CD. In one embodiment, the DMP is managed by a pincontroller in FPGA.

At block 1106, the process downloads or transmits the first bitstreamfrom the first storage memory to the configuration memory in the FPGAvia the DMP. In one embodiment, the first storage memory is an externalstorage device situated outside of FPGA. A benefit of loading CD from anexternal device is that it allows a user to control and/or manage thesource of CD in real-time via user-configured logic in FPGA.

At block 1108, the DMP is subsequently reset to a logic operation modecapable of handling user data when the essential functions facilitatedby the first bitstream are verified. Alternatively, the process iscapable of keeping or maintaining current setting of the DMP as theconfiguration mode when the first bitstream is defective. For example,after verifying the integrity and/or functionalities of the firstbitstream based on a set of predefined verification conditions, anaddress of a second bitstream is extracted from the first bitstream whenthe first bitstream is defective. In one aspect, the second bitstream isloaded via the DMP from a storage location addressed by the address ofthe second bitstream. The process is also capable of identifying anaddress of a BDP containing DCD for rebooting FPGA to a manufacturingdefault setting.

Alternatively, after verifying the integrity and/or functionalities ofthe first bitstream based on a set of predefined verificationconditions, the DMP is switched to a logic operation mode capable ofhandling user data when the first bitstream is verified or notdefective. For example, after generating a second bitstream representinga second set of configuration data by the configured LBs in a PLD orFPGA, the second bitstream is forwarded or sent to the external storagevia the DMP. Depending on the applications, the first bitstream can alsobe updated by the configured LBs in the PLD to form a new bitstreamrepresenting an updated configuration data. The new bitstream issubsequently sent to the external storage via the DMP. In one aspect,upon generating a data stream representing user data provided by thePLD, the data stream can be sent to the external storage for storing theuser data via the DMP. It should be noted that the external storage canbe volatile, non-volatile, or a combination of volatile and non-volatilememory device.

In one embodiment, the process is able to facilitate a receipt of a newbitstream which represents an update to the CD by a user through acommunication port of the PLD via a communication channel from the usersituated remotely. After switching the DMP to a logic operation modewhich is set to handle the user data, the new bitstream is written intothe external storage via the DMP. In operation, a user generates a newbitstream or an updated bitstream representing the CD for FPGA. Aftertransferring the updated bitstream to FPGA via a port coupled to acommunication channel, the updated bitstream is stored into an externalflash through DMP when DMP is set to the logic operation mode. It shouldbe noted that the communication channel is connected to FPGA via atleast one wire, cable, or connection to the user situated at a remotesite.

While particular embodiments of the present invention have been shownand described, it will be obvious to those of ordinary skills in the artthat based upon the teachings herein, changes and modifications may bemade without departing from this exemplary embodiment(s) of the presentinvention and its broader aspects. Therefore, the appended claims areintended to encompass within their scope all such changes andmodifications as are within the true spirit and scope of this exemplaryembodiment(s) of the present invention.

What is claimed is:
 1. A semiconductor device able to processinformation, comprising: a programmable logic device (“PLD”) containingconfigurable logic blocks (“LBs”) and a configuration memory forperforming programmed logic functions in accordance with configurationdata in the configuration memory; a storage coupled to the PLD andconfigured to store a plurality sets of configuration data for providingat least one set of configuration data to the configuration memory; anda configurable port of PLD, coupled to the storage, configured to beswitched a configuration mode for transmitting the one set ofconfiguration data from the storage to the configuration memory.
 2. Thedevice of claim 1, wherein one of the plurality of sets of configurationdata is a backup default page (“BDP”) containing default configurationdata (“DCD”) provided by manufacture of PLD for rebooting the PLD whenthe PIC fails to reboot.
 3. The device of claim 1, wherein the one setof configuration data includes an address addressing a memory locationof the storage for storing next configuration data.
 4. The device ofclaim 1, wherein the configurable port is further capable of beingswitched to a logic operation mode when a stream of user data generatedby the configurable logic blocks of the PLD is transmitted.
 5. Thedevice of claim 1, further comprising a communication channel situatedbetween the storage and the PLD for facilitating passage ofconfiguration data from the storage to the configuration memory.
 6. Thedevice of claim 2, wherein the DCD is provided by a manufacture whichproduces the PLD for resetting the PLD to manufacturing settings.
 7. Thedevice of claim 6, wherein the DCD is hidden from general public view sothat content of the DCD cannot be accidentally overwritten by a user. 8.The device of claim 1, wherein the storage is a flash memory configuredto store multiple bitstreams for multiple user configuration data sets.9. The device of claim 1, further comprising a verification componentcoupled to the PLD and configured to verify functionality and integrityof recently received configuration data.
 10. The device of claim 1,further comprising an initiator coupled to the PLD and configured tofacilitate initiation of reloading next configuration data when acorrupted configuration data is detected.
 11. The device of claim 1,further comprising a pin controller coupled to the configurable port andcapable of maintaining the configurable port operational when currentversion of configuration data in FPGA is defective.
 12. A system able toprovide various digital processing functions and network communicationscomprising the device of claim
 1. 13. A method of configuring a fieldprogrammable gate array (“FPGA”) via configuration data stored in aconfiguration memory, the method comprising: identifying a firstbitstream containing user defined configuration data stored in a storagevia a communication channel; setting a configurable dual-mode port(“DMP”) to a configuration mode; loading the first bitstream from thestorage to the configuration memory in FPGA via the DMP; and verifyingintegrity of the first bitstream based on a set of predefined verifyingdata to ascertain functionality of FPGA in accordance with the firstbitstream.
 14. The method of claim 13, further comprising extracting anaddress of memory location containing a second bitstream ofconfiguration data from the first bitstream when a corrupted firstbitstream is determined.
 15. The method of claim 13, further comprisingloading a second bitstream from a storage location addressed by theaddress of the second bitstream to the configuration memory.
 16. Themethod of claim 13, further comprising identifying the address of amemory location storing the second bitstream in a predefined location ofthe first bitstream.
 17. The method of claim 16, further comprisingverifying integrity of the second bitstream based on a second set ofpredefined verification conditions to ascertain functionality of FPGA inaccordance with the second bitstream.
 18. The method of claim 13,further comprising: identifying an address of a backup default page(“BDP”) containing manufacturing default configuration settings in apredefined location when a corrupted bitstream is detected; extractingthe address of the BDP from the second bitstream from a memory location;and rebooting the FPGA via default configuration data (“DCD”) in the BDPto a manufactural default setting.
 19. A configurable semiconductordevice able to process information, comprising: a programmableintegrated circuit (“PIC”) containing configurable logic blocks (“LBs”),an array of routing connections, and a configuration memory forperforming programmed logic functions in accordance with a set of inputsignals and configuration data in the configuration memory; a storagecoupled to the PIC and configured to store a plurality sets ofconfiguration data for providing at least one set of configuration datato the configuration memory; and a pin switch coupled to the storage andcapable of maintaining operation of a configurable dual-mode port(“DMP”) when current version of configuration data in the PIC isdefective.
 20. The device of claim 19, wherein the PIC further includesa backup default page (“BDP”) nonvolatile memory (“NVM”) configured tostore default configuration data (“DCD”) of the BDP for booting the PICto a manufacturing default setting.